﻿//Licensed under the Apache License, Version 2.0 (the "License");
//you may not use this file except in compliance with the License.
//See the NOTICE file distributed with this work for additional
//information regarding copyright ownership.
//You may obtain a copy of the License at
//
///   http://www.apache.org/licenses/LICENSE-2.0
//
//Unless required by applicable law or agreed to in writing, software
//distributed under the License is distributed on an "AS IS" BASIS,
//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//See the License for the specific language governing permissions and
//limitations under the License.
namespace OpenQA.Selenium.Appium.Android
{
    public sealed class AndroidKeyCode
    {

        public static readonly int Back = 4;
        public static readonly int BackSpace = 67;
        public static readonly int Del = 67;
        public static readonly int Enter = 66;
        public static readonly int Home = 3;
        public static readonly int Menu = 82;
        public static readonly int Settings = 176;
        public static readonly int Space = 62;

        /// <summary>
        /// getAction() value: the key has been pressed down.
        /// (0x00000000)
        /// </summary>
        public static readonly int ActionDown = 0;

        /// <summary>
        /// getAction() value: multiple duplicate key events have occurred in a row, or a complex string is being delivered. If the key code is not {#link Keycode_UNKNOWN then the {#link getRepeatCount() method returns the number of times the given key code should be executed. Otherwise, if the key code is Keycode_UNKNOWN, then this is a sequence of characters as returned by getCharacters().
        /// (0x00000002)
        /// </summary>
        public static readonly int ActionMultiple = 2;

        /// <summary>
        /// getAction() value: the key has been released.
        /// (0x00000001)
        /// </summary>
        public static readonly int ActionUp = 1;

        /// <summary>
        /// When associated with up key events, this indicates that the key press has been canceled. Typically this is used with virtual touch screen keys, where the user can slide from the virtual key area on to the display: in that case, the application will receive a canceled up event and should not perform the action normally associated with the key. Note that for this to work, the application can not perform an action for a key until it receives an up or the long press timeout has expired.
        /// (0x00000020)
        /// </summary>
        public static readonly int FlagCanceled = 32;

        /// <summary>
        /// Set when a key event has FLAG_CANCELED set because a long press action was executed while it was down.
        /// (0x00000100)
        /// </summary>
        public static readonly int FlagCanceledLongPress = 256;

        /// <summary>
        /// This mask is used for compatibility, to identify enter keys that are coming from an IME whose enter key has been auto-labelled "next" or "done". This allows TextView to dispatch these as normal enter keys for old applications, but still do the appropriate action when receiving them.
        /// (0x00000010)
        /// </summary>
        public static readonly int FlagEditorAction = 16;

        /// <summary>
        /// Set when a key event has been synthesized to implement default behavior for an event that the application did not handle. Fallback key events are generated by unhandled trackball motions (to emulate a directional keypad) and by certain unhandled key presses that are declared in the key map (such as special function numeric keypad keys when numlock is off).
        /// (0x00000400)
        /// </summary>
        public static readonly int FlagFallback = 1024;

        /// <summary>
        /// This mask is set if an event was known to come from a trusted part of the system. That is, the event is known to come from the user, and could not have been spoofed by a third party component.
        /// (0x00000008)
        /// </summary>
        public static readonly int FlagFromSystem = 8;

        /// <summary>
        /// This mask is set if we don't want the key event to cause us to leave touch mode.
        /// (0x00000004)
        /// </summary>
        public static readonly int FlagKeepTouchMode = 4;

        /// <summary>
        /// This flag is set for the first key repeat that occurs after the long press timeout.
        /// (0x00000080)
        /// </summary>
        public static readonly int FlagLongPress = 128;

        /// <summary>
        /// This mask is set if the key event was generated by a software keyboard.
        /// (0x00000002)
        /// </summary>
        public static readonly int FlagSoftKeyboard = 2;

        /// <summary>
        /// Set for ACTION_UP when this event's key code is still being tracked from its initial down. That is, somebody requested that tracking started on the key down and a long press has not caused the tracking to be canceled.
        /// (0x00000200)
        /// </summary>
        public static readonly int FlagTracking = 512;

        /// <summary>
        /// This key event was generated by a virtual (on-screen) hard key area. Typically this is an area of the touchscreen, outside of the regular display, dedicated to "hardware" buttons.
        /// (0x00000040)
        /// </summary>
        public static readonly int FlagVirtualHardKey = 64;

        /// <summary>
        /// This constant was deprecated in API level 20.
        /// This flag will never be set by the system since the system consumes all wake keys itself.
        /// This mask is set if the device woke because of this key event.
        /// (0x00000001)
        /// </summary>
        public static readonly int FlagWokeHere = 1;

        /// <summary>
        /// Key code constant: '0' key.
        /// (0x00000007)
        /// </summary>
        public static readonly int Keycode_0 = 7;

        /// <summary>
        /// Key code constant: '1' key.
        /// (0x00000008)
        /// </summary>
        public static readonly int Keycode_1 = 8;

        /// <summary>
        /// Key code constant: '11' key.
        /// (0x000000e3)
        /// </summary>
        public static readonly int Keycode_11 = 227;

        /// <summary>
        /// Key code constant: '12' key.
        /// (0x000000e4)
        /// </summary>
        public static readonly int Keycode_12 = 228;

        /// <summary>
        /// Key code constant: '2' key.
        /// (0x00000009)
        /// </summary>
        public static readonly int Keycode_2 = 9;

        /// <summary>
        /// Key code constant: '3' key.
        /// (0x0000000a)
        /// </summary>
        public static readonly int Keycode_3 = 10;

        /// <summary>
        /// Key code constant: 3D Mode key. Toggles the display between 2D and 3D mode.
        /// (0x000000ce)
        /// </summary>
        public static readonly int Keycode_3D_MODE = 206;

        /// <summary>
        /// Key code constant: '4' key.
        /// (0x0000000b)
        /// </summary>
        public static readonly int Keycode_4 = 11;

        /// <summary>
        /// Key code constant: '5' key.
        /// (0x0000000c)
        /// </summary>
        public static readonly int Keycode_5 = 12;

        /// <summary>
        /// Key code constant: '6' key.
        /// (0x0000000d)
        /// </summary>
        public static readonly int Keycode_6 = 13;

        /// <summary>
        /// Key code constant: '7' key.
        /// (0x0000000e)
        /// </summary>
        public static readonly int Keycode_7 = 14;

        /// <summary>
        /// Key code constant: '8' key.
        /// (0x0000000f)
        /// </summary>
        public static readonly int Keycode_8 = 15;

        /// <summary>
        /// Key code constant: '9' key.
        /// (0x00000010)
        /// </summary>
        public static readonly int Keycode_9 = 16;

        /// <summary>
        /// Key code constant: 'A' key.
        /// (0x0000001d)
        /// </summary>
        public static readonly int Keycode_A = 29;

        /// <summary>
        /// Key code constant: Left Alt modifier key.
        /// (0x00000039)
        /// </summary>
        public static readonly int Keycode_ALT_LEFT = 57;

        /// <summary>
        /// Key code constant: Right Alt modifier key.
        /// (0x0000003a)
        /// </summary>
        public static readonly int Keycode_ALT_RIGHT = 58;

        /// <summary>
        /// Key code constant: ''' (apostrophe) key.
        /// (0x0000004b)
        /// </summary>
        public static readonly int Keycode_APOSTROPHE = 75;

        /// <summary>
        /// Key code constant: App switch key. Should bring up the application switcher dialog.
        /// (0x000000bb)
        /// </summary>
        public static readonly int Keycode_APP_SWITCH = 187;

        /// <summary>
        /// Key code constant: Assist key. Launches the global assist activity. Not delivered to applications.
        /// (0x000000db)
        /// </summary>
        public static readonly int Keycode_ASSIST = 219;

        /// <summary>
        /// Key code constant: '@' key.
        /// (0x0000004d)
        /// </summary>
        public static readonly int Keycode_AT = 77;

        /// <summary>
        /// Key code constant: A/V Receiver input key. On TV remotes, switches the input mode on an external A/V Receiver.
        /// (0x000000b6)
        /// </summary>
        public static readonly int Keycode_AVR_INPUT = 182;

        /// <summary>
        /// Key code constant: A/V Receiver power key. On TV remotes, toggles the power on an external A/V Receiver.
        /// (0x000000b5)
        /// </summary>
        public static readonly int Keycode_AVR_POWER = 181;

        /// <summary>
        /// Key code constant: 'B' key.
        /// (0x0000001e)
        /// </summary>
        public static readonly int Keycode_B = 30;

        /// <summary>
        /// Key code constant: Back key.
        /// (0x00000004)
        /// </summary>
        public static readonly int Keycode_BACK = 4;

        /// <summary>
        /// Key code constant: '\' key.
        /// (0x00000049)
        /// </summary>
        public static readonly int Keycode_BACKSLASH = 73;

        /// <summary>
        /// Key code constant: Bookmark key. On some TV remotes, bookmarks content or web pages.
        /// (0x000000ae)
        /// </summary>
        public static readonly int Keycode_BOOKMARK = 174;

        /// <summary>
        /// Key code constant: Break / Pause key.
        /// (0x00000079)
        /// </summary>
        public static readonly int Keycode_BREAK = 121;

        /// <summary>
        /// Key code constant: Brightness Down key. Adjusts the screen brightness down.
        /// (0x000000dc)
        /// </summary>
        public static readonly int Keycode_BRIGHTNESS_DOWN = 220;

        /// <summary>
        /// Key code constant: Brightness Up key. Adjusts the screen brightness up.
        /// (0x000000dd)
        /// </summary>
        public static readonly int Keycode_BRIGHTNESS_UP = 221;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #1.
        /// (0x000000bc)
        /// </summary>
        public static readonly int KeycodeButton_1 = 188;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #10.
        /// (0x000000c5)
        /// </summary>
        public static readonly int KeycodeButton_10 = 197;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #11.
        /// (0x000000c6)
        /// </summary>
        public static readonly int KeycodeButton_11 = 198;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #12.
        /// (0x000000c7)
        /// </summary>
        public static readonly int KeycodeButton_12 = 199;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #13.
        /// (0x000000c8)
        /// </summary>
        public static readonly int KeycodeButton_13 = 200;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #14.
        /// (0x000000c9)
        /// </summary>
        public static readonly int KeycodeButton_14 = 201;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #15.
        /// (0x000000ca)
        /// </summary>
        public static readonly int KeycodeButton_15 = 202;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #16.
        /// (0x000000cb)
        /// </summary>
        public static readonly int KeycodeButton_16 = 203;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #2.
        /// (0x000000bd)
        /// </summary>
        public static readonly int KeycodeButton_2 = 189;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #3.
        /// (0x000000be)
        /// </summary>
        public static readonly int KeycodeButton_3 = 190;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #4.
        /// (0x000000bf)
        /// </summary>
        public static readonly int KeycodeButton_4 = 191;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #5.
        /// (0x000000c0)
        /// </summary>
        public static readonly int KeycodeButton_5 = 192;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #6.
        /// (0x000000c1)
        /// </summary>
        public static readonly int KeycodeButton_6 = 193;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #7.
        /// (0x000000c2)
        /// </summary>
        public static readonly int KeycodeButton_7 = 194;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #8.
        /// (0x000000c3)
        /// </summary>
        public static readonly int KeycodeButton_8 = 195;

        /// <summary>
        /// Key code constant: Generic Game Pad Button #9.
        /// (0x000000c4)
        /// </summary>
        public static readonly int KeycodeButton_9 = 196;

        /// <summary>
        /// Key code constant: A Button key. On a game controller, the A button should be either the button labeled A or the first button on the bottom row of controller buttons.
        /// (0x00000060)
        /// </summary>
        public static readonly int KeycodeButton_A = 96;

        /// <summary>
        /// Key code constant: B Button key. On a game controller, the B button should be either the button labeled B or the second button on the bottom row of controller buttons.
        /// (0x00000061)
        /// </summary>
        public static readonly int KeycodeButton_B = 97;

        /// <summary>
        /// Key code constant: C Button key. On a game controller, the C button should be either the button labeled C or the third button on the bottom row of controller buttons.
        /// (0x00000062)
        /// </summary>
        public static readonly int KeycodeButton_C = 98;

        /// <summary>
        /// Key code constant: L1 Button key. On a game controller, the L1 button should be either the button labeled L1 (or L) or the top left trigger button.
        /// (0x00000066)
        /// </summary>
        public static readonly int KeycodeButton_L1 = 102;

        /// <summary>
        /// Key code constant: L2 Button key. On a game controller, the L2 button should be either the button labeled L2 or the bottom left trigger button.
        /// (0x00000068)
        /// </summary>
        public static readonly int KeycodeButton_L2 = 104;
        /// <summary>
        /// Key code constant: Mode Button key. On a game controller, the button labeled Mode.
        /// (0x0000006e)
        /// </summary>
        public static readonly int KeycodeButton_MODE = 110;

        /// <summary>
        /// Key code constant: R1 Button key. On a game controller, the R1 button should be either the button labeled R1 (or R) or the top right trigger button.
        /// (0x00000067)
        /// </summary>
        public static readonly int KeycodeButton_R1 = 103;

        /// <summary>
        /// Key code constant: R2 Button key. On a game controller, the R2 button should be either the button labeled R2 or the bottom right trigger button.
        /// (0x00000069)
        /// </summary>
        public static readonly int KeycodeButton_R2 = 105;

        /// <summary>
        /// Key code constant: Select Button key. On a game controller, the button labeled Select.
        /// (0x0000006d)
        /// </summary>
        public static readonly int KeycodeButton_SELECT = 109;

        /// <summary>
        /// Key code constant: Start Button key. On a game controller, the button labeled Start.
        /// (0x0000006c)
        /// </summary>
        public static readonly int KeycodeButton_START = 108;

        /// <summary>
        /// Key code constant: Left Thumb Button key. On a game controller, the left thumb button indicates that the left (or only) joystick is pressed.
        /// (0x0000006a)
        /// </summary>
        public static readonly int KeycodeButton_THUMBL = 106;

        /// <summary>
        /// Key code constant: Right Thumb Button key. On a game controller, the right thumb button indicates that the right joystick is pressed.
        /// (0x0000006b)
        /// </summary>
        public static readonly int KeycodeButton_THUMBR = 107;

        /// </summary>
        /// Key code constant: X Button key. On a game controller, the X button should be either the button labeled X or the first button on the upper row of controller buttons.
        /// (0x00000063)
        /// </summary>
        public static readonly int KeycodeButton_X = 99;

        /// <summary>
        /// Key code constant: Y Button key. On a game controller, the Y button should be either the button labeled Y or the second button on the upper row of controller buttons.
        /// (0x00000064)
        /// </summary>
        public static readonly int KeycodeButton_Y = 100;

        /// <summary>
        /// Key code constant: Z Button key. On a game controller, the Z button should be either the button labeled Z or the third button on the upper row of controller buttons.
        /// (0x00000065)
        /// </summary>
        public static readonly int KeycodeButton_Z = 101;

        /// <summary>
        /// Key code constant: 'C' key.
        /// (0x0000001f)
        /// </summary>
        public static readonly int Keycode_C = 31;

        /// <summary>
        /// Key code constant: Calculator special function key. Used to launch a calculator application.
        /// (0x000000d2)
        /// </summary>
        public static readonly int Keycode_CALCULATOR = 210;

        /// <summary>
        /// Key code constant: Calendar special function key. Used to launch a calendar application.
        /// (0x000000d0)
        /// </summary>
        public static readonly int Keycode_CALENDAR = 208;

        /// <summary>
        /// Key code constant: Call key.
        /// (0x00000005)
        /// </summary>
        public static readonly int Keycode_CALL = 5;

        /// <summary>
        /// Key code constant: Camera key. Used to launch a camera application or take pictures.
        /// (0x0000001b)
        /// </summary>
        public static readonly int Keycode_CAMERA = 27;

        /// <summary>
        /// Key code constant: Caps Lock key.
        /// (0x00000073)
        /// </summary>
        public static readonly int Keycode_CAPS_LOCK = 115;

        /// <summary>
        /// Key code constant: Toggle captions key. Switches the mode for closed-captioning text, for example during television shows.
        /// (0x000000af)
        /// </summary>
        public static readonly int Keycode_CAPTIONS = 175;

        /// <summary>
        /// Key code constant: Channel down key. On TV remotes, decrements the television channel.
        /// (0x000000a7)
        /// </summary>
        public static readonly int Keycode_CHANNEL_DOWN = 167;

        /// <summary>
        /// Key code constant: Channel up key. On TV remotes, increments the television channel.
        /// (0x000000a6)
        /// </summary>
        public static readonly int Keycode_CHANNEL_UP = 166;

        /// <summary>
        /// Key code constant: Clear key.
        /// (0x0000001c)
        /// </summary>
        public static readonly int Keycode_CLEAR = 28;

        /// <summary>
        /// Key code constant: ',' key.
        /// (0x00000037)
        /// </summary>
        public static readonly int Keycode_COMMA = 55;

        /// <summary>
        /// Key code constant: Contacts special function key. Used to launch an address book application.
        /// (0x000000cf)
        /// </summary>
        public static readonly int Keycode_CONTACTS = 207;

        /// <summary>
        /// Key code constant: Left Control modifier key.
        /// (0x00000071)
        /// </summary>
        public static readonly int Keycode_CTRL_LEFT = 113;

        /// <summary>
        /// Key code constant: Right Control modifier key.
        /// (0x00000072)
        /// </summary>
        public static readonly int Keycode_CTRL_RIGHT = 114;

        /// <summary>
        /// Key code constant: 'D' key.
        /// (0x00000020)
        /// </summary>
        public static readonly int Keycode_D = 32;

        /// <summary>
        /// Key code constant: Backspace key. Deletes characters before the insertion popublic static readonly int , unlike Keycode_FORWARD_DEL.
        /// (0x00000043)
        /// </summary>
        public static readonly int Keycode_DEL = 67;

        /// <summary>
        /// Key code constant: Directional Pad Center key. May also be synthesized from trackball motions.
        /// (0x00000017)
        /// </summary>
        public static readonly int Keycode_DPAD_CENTER = 23;

        /// <summary>
        /// Key code constant: Directional Pad Down key. May also be synthesized from trackball motions.
        /// (0x00000014)
        /// </summary>
        public static readonly int Keycode_DPAD_DOWN = 20;

        /// <summary>
        /// Key code constant: Directional Pad Left key. May also be synthesized from trackball motions.
        /// (0x00000015)
        /// </summary>
        public static readonly int Keycode_DPAD_LEFT = 21;

        /// <summary>
        /// Key code constant: Directional Pad Right key. May also be synthesized from trackball motions.
        /// (0x00000016)
        /// </summary>
        public static readonly int Keycode_DPAD_RIGHT = 22;

        /// <summary>
        /// Key code constant: Directional Pad Up key. May also be synthesized from trackball motions.
        /// (0x00000013)
        /// </summary>
        public static readonly int Keycode_DPAD_UP = 19;

        /// <summary>
        /// Key code constant: DVR key. On some TV remotes, switches to a DVR mode for recorded shows.
        /// (0x000000ad)
        /// </summary>
        public static readonly int Keycode_DVR = 173;

        /// <summary>
        /// Key code constant: 'E' key.
        /// (0x00000021)
        /// </summary>
        public static readonly int Keycode_E = 33;

        /// <summary>
        /// Key code constant: Japanese alphanumeric key.
        /// (0x000000d4)
        /// </summary>
        public static readonly int Keycode_EISU = 212;

        /// <summary>
        /// Key code constant: End Call key.
        /// (0x00000006)
        /// </summary>
        public static readonly int Keycode_ENDCALL = 6;

        /// <summary>
        /// Key code constant: Enter key.
        /// (0x00000042)
        /// </summary>
        public static readonly int Keycode_ENTER = 66;

        /// <summary>
        /// Key code constant: Envelope special function key. Used to launch a mail application.
        /// (0x00000041)
        /// </summary>
        public static readonly int Keycode_ENVELOPE = 65;

        /// <summary>
        /// Key code constant: '=' key.
        /// (0x00000046)
        /// </summary>
        public static readonly int Keycode_EQUALS = 70;

        /// <summary>
        /// Key code constant: Escape key.
        /// (0x0000006f)
        /// </summary>
        public static readonly int Keycode_ESCAPE = 111;

        /// <summary>
        /// Key code constant: Explorer special function key. Used to launch a browser application.
        /// (0x00000040)
        /// </summary>
        public static readonly int Keycode_EXPLORER = 64;

        /// <summary>
        /// Key code constant: 'F' key.
        /// (0x00000022)
        /// </summary>
        public static readonly int Keycode_F = 34;

        /// <summary>
        /// Key code constant: F1 key.
        /// (0x00000083)
        /// </summary>
        public static readonly int Keycode_F1 = 131;

        /// <summary>
        /// Key code constant: F10 key.
        /// (0x0000008c)
        /// </summary>
        public static readonly int Keycode_F10 = 140;

        /// <summary>
        /// Key code constant: F11 key.
        /// (0x0000008d)
        /// </summary>
        public static readonly int Keycode_F11 = 141;

        /// <summary>
        /// Key code constant: F12 key.
        /// (0x0000008e)
        /// </summary>
        public static readonly int Keycode_F12 = 142;

        /// <summary>
        /// Key code constant: F2 key.
        /// (0x00000084)
        /// </summary>
        public static readonly int Keycode_F2 = 132;

        /// <summary>
        /// Key code constant: F3 key.
        /// (0x00000085)
        /// </summary>
        public static readonly int Keycode_F3 = 133;

        /// <summary>
        /// Key code constant: F4 key.
        /// (0x00000086)
        /// </summary>
        public static readonly int Keycode_F4 = 134;

        /// <summary>
        /// Key code constant: F5 key.
        /// (0x00000087)
        /// </summary>
        public static readonly int Keycode_F5 = 135;

        /// <summary>
        /// Key code constant: F6 key.
        /// (0x00000088)
        /// </summary>
        public static readonly int Keycode_F6 = 136;

        /// <summary>
        /// Key code constant: F7 key.
        /// (0x00000089)
        /// </summary>
        public static readonly int Keycode_F7 = 137;

        /// <summary>
        /// Key code constant: F8 key.
        /// (0x0000008a)
        /// </summary>
        public static readonly int Keycode_F8 = 138;

        /// </summary>
        /// Key code constant: F9 key.
        /// (0x0000008b)
        /// </summary>
        public static readonly int Keycode_F9 = 139;

        /// <summary>
        /// Key code constant: Camera Focus key. Used to focus the camera.
        /// (0x00000050)
        /// </summary>
        public static readonly int Keycode_FOCUS = 80;

        /// <summary>
        /// Key code constant: Forward key. Navigates forward in the history stack. Complement of Keycode_BACK.
        /// (0x0000007d)
        /// </summary>
        public static readonly int Keycode_FORWARD = 125;

        /// <summary>
        /// Key code constant: Forward Delete key. Deletes characters ahead of the insertion popublic static readonly int , unlike Keycode_DEL.
        /// (0x00000070)
        /// </summary>
        public static readonly int Keycode_FORWARD_DEL = 112;

        /// <summary>
        /// Key code constant: Function modifier key.
        /// (0x00000077)
        /// </summary>
        public static readonly int Keycode_FUNCTION = 119;

        /// <summary>
        /// Key code constant: 'G' key.
        /// (0x00000023)
        /// </summary>
        public static readonly int Keycode_G = 35;

        /// <summary>
        /// Key code constant: '`' (backtick) key.
        /// (0x00000044)
        /// </summary>
        public static readonly int Keycode_GRAVE = 68;

        /// <summary>
        /// Key code constant: Guide key. On TV remotes, shows a programming guide.
        /// (0x000000ac)
        /// </summary>
        public static readonly int Keycode_GUIDE = 172;

        /// <summary>
        /// Key code constant: 'H' key.
        /// (0x00000024)
        /// </summary>
        public static readonly int Keycode_H = 36;

        /// <summary>
        /// Key code constant: Headset Hook key. Used to hang up calls and stop media.
        /// (0x0000004f)
        /// </summary>
        public static readonly int Keycode_HEADSETHOOK = 79;

        /// <summary>
        /// Key code constant: Help key.
        /// (0x00000103)
        /// </summary>
        public static readonly int Keycode_HELP = 259;

        /// <summary>
        /// Key code constant: Japanese conversion key.
        /// (0x000000d6)
        /// </summary>
        public static readonly int Keycode_HENKAN = 214;

        /// <summary>
        /// Key code constant: Home key. This key is handled by the framework and is never delivered to applications.
        /// (0x00000003)
        /// </summary>
        public static readonly int Keycode_HOME = 3;

        /// <summary>
        /// Key code constant: 'I' key.
        /// (0x00000025)
        /// </summary>
        public static readonly int Keycode_I = 37;

        /// <summary>
        /// Key code constant: Info key. Common on TV remotes to show additional information related to what is currently being viewed.
        /// (0x000000a5)
        /// </summary>
        public static readonly int Keycode_INFO = 165;

        /// <summary>
        /// Key code constant: Insert key. Toggles insert / overwrite edit mode.
        /// (0x0000007c)
        /// </summary>
        public static readonly int Keycode_INSERT = 124;

        /// <summary>
        /// Key code constant: 'J' key.
        /// (0x00000026)
        /// </summary>
        public static readonly int Keycode_J = 38;

        /// <summary>
        /// Key code constant: 'K' key.
        /// (0x00000027)
        /// </summary>
        public static readonly int Keycode_K = 39;

        /// <summary>
        /// Key code constant: Japanese kana key.
        /// (0x000000da)
        /// </summary>
        public static readonly int Keycode_KANA = 218;

        /// <summary>
        /// Key code constant: Japanese katakana / hiragana key.
        /// (0x000000d7)
        /// </summary>
        public static readonly int Keycode_KATAKANA_HIRAGANA = 215;

        /// <summary>
        /// Key code constant: 'L' key.
        /// (0x00000028)
        /// </summary>
        public static readonly int Keycode_L = 40;

        /// <summary>
        /// Key code constant: Language Switch key. Toggles the current input language such as switching between English and Japanese on a QWERTY keyboard. On some devices, the same function may be performed by pressing Shift+Spacebar.
        /// (0x000000cc)
        /// </summary>
        public static readonly int Keycode_LANGUAGE_SWITCH = 204;

        /// <summary>
        /// Key code constant: Last Channel key. Goes to the last viewed channel.
        /// (0x000000e5)
        /// </summary>
        public static readonly int Keycode_LAST_CHANNEL = 229;

        /// <summary>
        /// Key code constant: '[' key.
        /// (0x00000047)
        /// </summary>
        public static readonly int Keycode_LEFT_BRACKET = 71;

        /// <summary>
        /// Key code constant: 'M' key.
        /// (0x00000029)
        /// </summary>
        public static readonly int Keycode_M = 41;

        /// <summary>
        /// Key code constant: Manner Mode key. Toggles silent or vibrate mode on and off to make the device behave more politely in certain settings such as on a crowded train. On some devices, the key may only operate when long-pressed.
        /// (0x000000cd)
        /// </summary>
        public static readonly int Keycode_MANNER_MODE = 205;

        /// <summary>
        /// Key code constant: Audio Track key. Switches the audio tracks.
        /// (0x000000de)
        /// </summary>
        public static readonly int Keycode_MEDIA_AUDIO_TRACK = 222;

        /// <summary>
        /// Key code constant: Close media key. May be used to close a CD tray, for example.
        /// (0x00000080)
        /// </summary>
        public static readonly int Keycode_MEDIA_CLOSE = 128;

        /// <summary>
        /// Key code constant: Eject media key. May be used to eject a CD tray, for example.
        /// (0x00000081)
        /// </summary>
        public static readonly int Keycode_MEDIA_EJECT = 129;

        /// <summary>
        /// Key code constant: Fast Forward media key.
        /// (0x0000005a)
        /// </summary>
        public static readonly int Keycode_MEDIA_FAST_FORWARD = 90;

        /// <summary>
        /// Key code constant: Play Next media key.
        /// (0x00000057)
        /// </summary>
        public static readonly int Keycode_MEDIA_NEXT = 87;

        /// <summary>
        /// Key code constant: Pause media key.
        /// (0x0000007f)
        /// </summary>
        public static readonly int Keycode_MEDIA_PAUSE = 127;

        /// <summary>
        /// Key code constant: Play media key.
        /// (0x0000007e)
        /// </summary>
        public static readonly int Keycode_MEDIA_PLAY = 126;

        /// <summary>
        /// Key code constant: Play/Pause media key.
        /// (0x00000055)
        /// </summary>
        public static readonly int Keycode_MEDIA_PLAY_PAUSE = 85;

        /// <summary>
        /// Key code constant: Play Previous media key.
        /// (0x00000058)
        /// </summary>
        public static readonly int Keycode_MEDIA_PREVIOUS = 88;

        /// <summary>
        /// Key code constant: Record media key.
        /// (0x00000082)
        /// </summary>
        public static readonly int Keycode_MEDIA_RECORD = 130;

        /// <summary>
        /// Key code constant: Rewind media key.
        /// (0x00000059)
        /// </summary>
        public static readonly int Keycode_MEDIA_REWIND = 89;

        /// <summary>
        /// Key code constant: Stop media key.
        /// (0x00000056)
        /// </summary>
        public static readonly int Keycode_MEDIA_STOP = 86;

        /// <summary>
        /// Key code constant: Media Top Menu key. Goes to the top of media menu.
        /// (0x000000e2)
        /// </summary>
        public static readonly int Keycode_MEDIA_TOP_MENU = 226;

        /// <summary>
        /// Key code constant: Menu key.
        /// (0x00000052)
        /// </summary>
        public static readonly int Keycode_MENU = 82;

        /// <summary>
        /// Key code constant: Left Meta modifier key.
        /// (0x00000075)
        /// </summary>
        public static readonly int Keycode_META_LEFT = 117;

        /// <summary>
        /// Key code constant: Right Meta modifier key.
        /// (0x00000076)
        /// </summary>
        public static readonly int Keycode_META_RIGHT = 118;

        /// <summary>
        /// Key code constant: '-'.
        /// (0x00000045)
        /// </summary>
        public static readonly int Keycode_MINUS = 69;

        /// <summary>
        /// Key code constant: End Movement key. Used for scrolling or moving the cursor around to the end of a line or to the bottom of a list.
        /// (0x0000007b)
        /// </summary>
        public static readonly int Keycode_MOVE_END = 123;

        /// <summary>
        /// Key code constant: Home Movement key. Used for scrolling or moving the cursor around to the start of a line or to the top of a list.
        /// (0x0000007a)
        /// </summary>
        public static readonly int Keycode_MOVE_HOME = 122;

        /// <summary>
        /// Key code constant: Japanese non-conversion key.
        /// (0x000000d5)
        /// </summary>
        public static readonly int Keycode_MUHENKAN = 213;

        /// <summary>
        /// Key code constant: Music special function key. Used to launch a music player application.
        /// (0x000000d1)
        /// </summary>
        public static readonly int Keycode_MUSIC = 209;

        /// <summary>
        /// Key code constant: Mute key. Mutes the microphone, unlike Keycode_VOLUME_MUTE.
        /// (0x0000005b)
        /// </summary>
        public static readonly int Keycode_MUTE = 91;

        /// <summary>
        /// Key code constant: 'N' key.
        /// (0x0000002a)
        /// </summary>
        public static readonly int Keycode_N = 42;

        /// <summary>
        /// Key code constant: Notification key.
        /// (0x00000053)
        /// </summary>
        public static readonly int Keycode_NOTIFICATION = 83;

        /// <summary>
        /// Key code constant: Number modifier key. Used to enter numeric symbols. This key is not Num Lock; it is more like Keycode_ALT_LEFT and is public static readonly int erpreted as an ALT key by MetaKeyKeyListener.
        /// (0x0000004e)
        /// <summary>
        public static readonly int Keycode_NUM = 78;

        /// <summary>
        /// Key code constant: Numeric keypad '0' key.
        /// (0x00000090)
        /// </summary>
        public static readonly int KeycodeNumpad_0 = 144;

        /// <summary>
        /// Key code constant: Numeric keypad '1' key.
        /// (0x00000091)
        /// </summary>
        public static readonly int KeycodeNumpad_1 = 145;

        /// <summary>
        /// Key code constant: Numeric keypad '2' key.
        /// (0x00000092)
        /// </summary>
        public static readonly int KeycodeNumpad_2 = 146;

        /// <summary>
        /// Key code constant: Numeric keypad '3' key.
        /// (0x00000093)
        /// </summary>
        public static readonly int KeycodeNumpad_3 = 147;

        /// <summary>
        /// Key code constant: Numeric keypad '4' key.
        /// (0x00000094)
        /// </summary>
        public static readonly int KeycodeNumpad_4 = 148;

        /// <summary>
        /// Key code constant: Numeric keypad '5' key.
        /// (0x00000095)
        /// </summary>
        public static readonly int KeycodeNumpad_5 = 149;

        /// <summary>
        /// Key code constant: Numeric keypad '6' key.
        /// (0x00000096)
        /// </summary>
        public static readonly int KeycodeNumpad_6 = 150;

        /// <summary>
        /// Key code constant: Numeric keypad '7' key.
        /// (0x00000097)
        /// </summary>
        public static readonly int KeycodeNumpad_7 = 151;

        /// <summary>
        /// Key code constant: Numeric keypad '8' key.
        /// (0x00000098)
        /// </summary>
        public static readonly int KeycodeNumpad_8 = 152;

        /// <summary>
        /// Key code constant: Numeric keypad '9' key.
        /// (0x00000099)
        /// </summary>
        public static readonly int KeycodeNumpad_9 = 153;

        /// <summary>
        /// Key code constant: Numeric keypad '+' key (for addition).
        /// (0x0000009d)
        /// </summary>
        public static readonly int KeycodeNumpad_ADD = 157;

        /// <summary>
        /// Key code constant: Numeric keypad ',' key (for decimals or digit grouping).
        /// (0x0000009f)
        /// </summary>
        public static readonly int KeycodeNumpad_COMMA = 159;

        /// <summary>
        /// Key code constant: Numeric keypad '/' key (for division).
        /// (0x0000009a)
        /// </summary>
        public static readonly int KeycodeNumpad_DIVIDE = 154;

        /// <summary>
        /// Key code constant: Numeric keypad '.' key (for decimals or digit grouping).
        /// (0x0000009e)
        /// </summary>
        public static readonly int KeycodeNumpad_DOT = 158;

        /// <summary>
        /// Key code constant: Numeric keypad Enter key.
        /// (0x000000a0)
        /// </summary>
        public static readonly int KeycodeNumpad_ENTER = 160;

        /// <summary>
        /// Key code constant: Numeric keypad '=' key.
        /// (0x000000a1)
        /// </summary>
        public static readonly int KeycodeNumpad_EQUALS = 161;

        /// <summary>
        /// Key code constant: Numeric keypad '(' key.
        /// (0x000000a2)
        /// </summary>
        public static readonly int KeycodeNumpad_LEFT_PAREN = 162;

        /// <summary>
        /// Key code constant: Numeric keypad '*' key (for multiplication).
        /// (0x0000009b)
        /// </summary>
        public static readonly int KeycodeNumpad_MULTIPLY = 155;

        /// <summary>
        /// Key code constant: Numeric keypad ')' key.
        /// (0x000000a3)
        /// </summary>
        public static readonly int KeycodeNumpad_RIGHT_PAREN = 163;

        /// <summary>
        /// Key code constant: Numeric keypad '-' key (for subtraction).
        /// (0x0000009c)
        /// <summary>
        public static readonly int KeycodeNumpad_SUBTRACT = 156;

        /// <summary>
        /// Key code constant: Num Lock key. This is the Num Lock key; it is different from Keycode_NUM. This key alters the behavior of other keys on the numeric keypad.
        /// (0x0000008f)
        /// </summary>
        public static readonly int Keycode_NUM_LOCK = 143;

        /// <summary>
        /// Key code constant: 'O' key.
        /// (0x0000002b)
        /// </summary>
        public static readonly int Keycode_O = 43;

        /// <summary>
        /// Key code constant: 'P' key.
        /// (0x0000002c)
        /// </summary>
        public static readonly int Keycode_P = 44;

        /// <summary>
        /// Key code constant: Page Down key.
        /// (0x0000005d)
        /// </summary>
        public static readonly int Keycode_PAGE_DOWN = 93;

        /// <summary>
        /// Key code constant: Page Up key.
        /// (0x0000005c)
        /// </summary>
        public static readonly int Keycode_PAGE_UP = 92;

        /// <summary>
        /// Key code constant: Pairing key. Initiates peripheral pairing mode. Useful for pairing remote control devices or game controllers, especially if no other input mode is available.
        /// (0x000000e1)
        /// </summary>
        public static readonly int Keycode_PAIRING = 225;

        /// <summary>
        /// Key code constant: '.' key.
        /// (0x00000038)
        /// </summary>
        public static readonly int Keycode_PERIOD = 56;

        /// <summary>
        /// Key code constant: Picture Symbols modifier key. Used to switch symbol sets (Emoji, Kao-moji).
        /// (0x0000005e)
        /// </summary>
        public static readonly int Keycode_PICTSYMBOLS = 94;

        /// <summary>
        /// Key code constant: '+' key.
        /// (0x00000051)
        /// </summary>
        public static readonly int Keycode_PLUS = 81;

        /// <summary>
        /// Key code constant: '#' key.
        /// (0x00000012)
        /// </summary>
        public static readonly int Keycode_POUND = 18;

        /// <summary>
        /// Key code constant: Power key.
        /// (0x0000001a)
        /// </summary>
        public static readonly int Keycode_POWER = 26;

        /// <summary>
        /// Key code constant: Blue "programmable" key. On TV remotes, acts as a contextual/programmable key.
        /// (0x000000ba)
        /// </summary>
        public static readonly int Keycode_PROG_BLUE = 186;

        /// <summary>
        /// Key code constant: Green "programmable" key. On TV remotes, actsas a contextual/programmable key.
        /// (0x000000b8)
        /// </summary>
        public static readonly int Keycode_PROG_GREEN = 184;

        /// <summary>
        /// Key code constant: Red "programmable" key. On TV remotes, acts as a contextual/programmable key.
        /// (0x000000b7)
        /// </summary>
        public static readonly int Keycode_PROG_RED = 183;

        /// <summary>
        /// Key code constant: Yellow "programmable" key. On TV remotes, acts as a contextual/programmable key.
        /// (0x000000b9)
        /// </summary>
        public static readonly int Keycode_PROG_YELLOW = 185;

        /// <summary>
        /// Key code constant: 'Q' key.
        /// (0x0000002d)
        /// </summary>
        public static readonly int Keycode_Q = 45;

        /// <summary>
        /// Key code constant: 'R' key.
        /// (0x0000002e)
        /// </summary>
        public static readonly int Keycode_R = 46;

        /// <summary>
        /// Key code constant: ']' key.
        /// (0x00000048)
        /// </summary>
        public static readonly int Keycode_RIGHT_BRACKET = 72;

        /// <summary>
        /// Key code constant: Japanese Ro key.
        /// (0x000000d9)
        /// </summary>
        public static readonly int Keycode_RO = 217;

        /// <summary>
        /// Key code constant: 'S' key.
        /// (0x0000002f)
        /// </summary>
        public static readonly int Keycode_S = 47;

        /// <summary>
        /// Key code constant: Scroll Lock key.
        /// (0x00000074)
        /// </summary>
        public static readonly int Keycode_SCROLL_LOCK = 116;

        /// <summary>
        /// Key code constant: Search key.
        /// (0x00000054)
        /// </summary>
        public static readonly int Keycode_SEARCH = 84;

        /// <summary>
        /// Key code constant: ';' key.
        /// (0x0000004a)
        /// </summary>
        public static readonly int Keycode_SEMICOLON = 74;

        /// <summary>
        /// Key code constant: Settings key. Starts the system settings activity.
        /// (0x000000b0)
        /// </summary>
        public static readonly int Keycode_SETTINGS = 176;

        /// <summary>
        /// Key code constant: Left Shift modifier key.
        /// (0x0000003b)
        /// </summary>
        public static readonly int Keycode_SHIFT_LEFT = 59;

        /// <summary>
        /// Key code constant: Right Shift modifier key.
        /// (0x0000003c)
        /// </summary>
        public static readonly int Keycode_SHIFT_RIGHT = 60;

        /// <summary>
        /// Key code constant: '/' key.
        /// (0x0000004c)
        /// </summary>
        public static readonly int Keycode_SLASH = 76;

        /// <summary>
        /// Key code constant: Sleep key. Puts the device to sleep. Behaves somewhat like Keycode_POWER but it has no effect if the device is already asleep.
        /// (0x000000df)
        /// </summary>
        public static readonly int Keycode_SLEEP = 223;

        /// <summary>
        /// Key code constant: Soft Left key. Usually situated below the display on phones and used as a multi-function feature key for selecting a software defined function shown on the bottom left of the display.
        /// (0x00000001)
        /// </summary>
        public static readonly int KeycodeSoft_LEFT = 1;

        /// <summary>
        /// Key code constant: Soft Right key. Usually situated below the display on phones and used as a multi-function feature key for selecting a software defined function shown on the bottom right of the display.
        /// (0x00000002)
        /// </summary>
        public static readonly int KeycodeSoft_RIGHT = 2;

        /// <summary>
        /// Key code constant: Space key.
        /// (0x0000003e)
        /// </summary>
        public static readonly int Keycode_SPACE = 62;

        /// <summary>
        /// Key code constant: '*' key.
        /// (0x00000011)
        /// </summary>
        public static readonly int Keycode_STAR = 17;

        /// <summary>
        /// Key code constant: Set-top-box input key. On TV remotes, switches the input mode on an external Set-top-box.
        /// (0x000000b4)
        /// </summary>
        public static readonly int KeycodeSTB_INPUT = 180;

        /// <summary>
        /// Key code constant: Set-top-box power key. On TV remotes, toggles the power on an external Set-top-box.
        /// (0x000000b3)
        /// </summary>
        public static readonly int KeycodeSTB_POWER = 179;

        /// <summary>
        /// Key code constant: Switch Charset modifier key. Used to switch character sets (Kanji, Katakana).
        /// (0x0000005f)
        /// </summary>
        public static readonly int Keycode_SWITCH_CHARSET = 95;

        /// <summary>
        /// Key code constant: Symbol modifier key. Used to enter alternate symbols.
        /// (0x0000003f)
        /// </summary>
        public static readonly int Keycode_SYM = 63;

        /// <summary>
        /// Key code constant: System Request / Prpublic static readonly int  Screen key.
        /// (0x00000078)
        /// </summary>
        public static readonly int Keycode_SYSRQ = 120;

        /// <summary>
        /// Key code constant: 'T' key.
        /// (0x00000030)
        /// </summary>
        public static readonly int Keycode_T = 48;

        /// <summary>
        /// Key code constant: Tab key.
        /// (0x0000003d)
        /// </summary>
        public static readonly int Keycode_TAB = 61;

        /// <summary>
        /// Key code constant: TV key. On TV remotes, switches to viewing live TV.
        /// (0x0000000aa)
        /// </summary>
        public static readonly int Keycode_TV = 170;

        /// <summary>
        /// Key code constant: Antenna/Cable key. Toggles broadcast input source between antenna and cable.
        /// (0x000000f2)
        /// </summary>
        public static readonly int KeycodeTV_ANTENNA_CABLE = 242;

        /// <summary>
        /// Key code constant: Audio description key. Toggles audio description off / on.
        /// (0x000000fc)
        /// </summary>
        public static readonly int KeycodeTV_AUDIO_DESCRIPTION = 252;

        /// <summary>
        /// Key code constant: Audio description mixing volume down key. Lessen audio description volume as compared with normal audio volume.
        /// (0x000000fe)
        /// </summary>
        public static readonly int KeycodeTV_AUDIO_DESCRIPTION_MIX_DOWN = 254;

        /// <summary>
        /// Key code constant: Audio description mixing volume up key. Louden audio description volume as compared with normal audio volume.
        /// (0x000000fd)
        /// </summary>
        public static readonly int KeycodeTV_AUDIO_DESCRIPTION_MIX_UP = 253;

        /// <summary>
        /// Key code constant: Contents menu key. Goes to the title list. Corresponds to Contents Menu (0x0B) of CEC User Control Code
        /// (0x00000100)
        /// </summary>
        public static readonly int KeycodeTV_CONTENTS_MENU = 256;

        /// <summary>
        /// Key code constant: TV data service key. Displays data services like weather, sports.
        /// (0x000000e6)
        /// </summary>
        public static readonly int KeycodeTV_DATA_SERVICE = 230;

        /// <summary>
        /// Key code constant: TV input key. On TV remotes, switches the input on a television screen.
        /// (0x000000b2)
        /// </summary>
        public static readonly int KeycodeTV_INPUT = 178;

        /// <summary>
        /// Key code constant: Component #1 key. Switches to component video input #1.
        /// (0x000000f9)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_COMPONENT_1 = 249;

        /// <summary>
        /// Key code constant: Component #2 key. Switches to component video input #2.
        /// (0x000000fa)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_COMPONENT_2 = 250;

        /// <summary>
        /// Key code constant: Composite #1 key. Switches to composite video input #1.
        /// (0x000000f7)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_COMPOSITE_1 = 247;

        /// <summary>
        /// Key code constant: Composite #2 key. Switches to composite video input #2.
        /// (0x000000f8)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_COMPOSITE_2 = 248;

        /// <summary>
        /// Key code constant: HDMI #1 key. Switches to HDMI input #1.
        /// (0x000000f3)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_HDMI_1 = 243;

        /// <summary>
        /// Key code constant: HDMI #2 key. Switches to HDMI input #2.
        /// (0x000000f4)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_HDMI_2 = 244;

        /// <summary>
        /// Key code constant: HDMI #3 key. Switches to HDMI input #3.
        /// (0x000000f5)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_HDMI_3 = 245;

        /// <summary>
        /// Key code constant: HDMI #4 key. Switches to HDMI input #4.
        /// (0x000000f6)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_HDMI_4 = 246;

        /// <summary>
        /// Key code constant: VGA #1 key. Switches to VGA (analog RGB) input #1.
        /// (0x000000fb)
        /// </summary>
        public static readonly int KeycodeTV_INPUT_VGA_1 = 251;

        /// <summary>
        /// Key code constant: Media context menu key. Goes to the context menu of media contents. Corresponds to Media Context-sensitive Menu (0x11) of CEC User Control Code.
        /// (0x00000101)
        /// </summary>
        public static readonly int KeycodeTV_MEDIA_CONTEXT_MENU = 257;

        /// <summary>
        /// Key code constant: Toggle Network key. Toggles selecting broacast services.
        /// (0x000000f1)
        /// </summary>
        public static readonly int KeycodeTV_NETWORK = 241;

        /// <summary>
        /// Key code constant: Number entry key. Initiates to enter multi-digit channel nubmber when each digit key is assigned for selecting separate channel. Corresponds to Number Entry Mode (0x1D) of CEC User Control Code.
        /// (0x000000ea)
        /// </summary>
        public static readonly int KeycodeTV_NUMBER_ENTRY = 234;

        /// <summary>
        /// Key code constant: TV power key. On TV remotes, toggles the power on a television screen.
        /// (0x000000b1)
        /// </summary>
        public static readonly int KeycodeTV_POWER = 177;

        /// <summary>
        /// Key code constant: Radio key. Toggles TV service / Radio service.
        /// (0x000000e8)
        /// </summary>
        public static readonly int KeycodeTV_RADIO_SERVICE = 232;

        /// <summary>
        /// Key code constant: Satellite key. Switches to digital satellite broadcast service.
        /// (0x000000ed)
        /// </summary>
        public static readonly int KeycodeTV_SATELLITE = 237;

        /// <summary>
        /// Key code constant: BS key. Switches to BS digital satellite broadcasting service available in Japan.
        /// (0x000000ee)
        /// </summary>
        public static readonly int KeycodeTV_SATELLITE_BS = 238;

        /// <summary>
        /// Key code constant: CS key. Switches to CS digital satellite broadcasting service available in Japan.
        /// (0x000000ef)
        /// </summary>
        public static readonly int KeycodeTV_SATELLITE_CS = 239;

        /// <summary>
        /// Key code constant: BS/CS key. Toggles between BS and CS digital satellite services.
        /// (0x000000f0)
        /// </summary>
        public static readonly int KeycodeTV_SATELLITE_SERVICE = 240;

        /// <summary>
        /// Key code constant: Teletext key. Displays Teletext service.
        /// (0x000000e9)
        /// </summary>
        public static readonly int KeycodeTV_TELETEXT = 233;

        /// <summary>
        /// Key code constant: Analog Terrestrial key. Switches to analog terrestrial broadcast service.
        /// (0x000000eb)
        /// </summary>
        public static readonly int KeycodeTV_TERRESTRIAL_ANALOG = 235;

        /// <summary>
        /// Key code constant: Digital Terrestrial key. Switches to digital terrestrial broadcast service.
        /// (0x000000ec)
        /// </summary>
        public static readonly int KeycodeTV_TERRESTRIAL_DIGITAL = 236;

        /// <summary>
        /// Key code constant: Timer programming key. Goes to the timer recording menu. Corresponds to Timer Programming (0x54) of CEC User Control Code.
        /// (0x00000102)
        /// </summary>
        public static readonly int KeycodeTV_TIMER_PROGRAMMING = 258;

        /// <summary>
        /// Key code constant: Zoom mode key. Changes Zoom mode (Normal, Full, Zoom, Wide-zoom, etc.)
        /// (0x000000ff)
        /// </summary>
        public static readonly int KeycodeTV_ZOOM_MODE = 255;

        /// <summary>
        /// Key code constant: 'U' key.
        /// (0x00000031)
        /// </summary>
        public static readonly int Keycode_U = 49;

        /// <summary>
        /// Key code constant: Unknown key code.
        /// (0x00000000)
        /// </summary>
        public static readonly int Keycode_UNKNOWN = 0;

        /// <summary>
        /// Key code constant: 'V' key.
        /// (0x00000032)
        /// </summary>
        public static readonly int Keycode_V = 50;

        /// <summary>
        /// Key code constant: Voice Assist key. Launches the global voice assist activity. Not delivered to applications.
        /// (0x000000e7)
        /// </summary>
        public static readonly int Keycode_VOICE_ASSIST = 231;

        /// <summary>
        /// Key code constant: Volume Down key. Adjusts the speaker volume down.
        /// (0x00000019)
        /// </summary>
        public static readonly int Keycode_VOLUME_DOWN = 25;

        /// <summary>
        /// Key code constant: Volume Mute key. Mutes the speaker, unlike Keycode_MUTE. This key should normally be implemented as a toggle such that the first press mutes the speaker and the second press restores the original volume.
        /// (0x000000a4)
        /// </summary>
        public static readonly int Keycode_VOLUME_MUTE = 164;

        /// <summary>
        /// Key code constant: Volume Up key. Adjusts the speaker volume up.
        /// (0x00000018)
        /// </summary>
        public static readonly int Keycode_VOLUME_UP = 24;

        /// <summary>
        /// Key code constant: 'W' key.
        /// (0x00000033)
        /// </summary>
        public static readonly int Keycode_W = 51;

        /// <summary>
        /// Key code constant: Wakeup key. Wakes up the device. Behaves somewhat like Keycode_POWER but it has no effect if the device is already awake.
        /// (0x000000e0)
        /// </summary>
        public static readonly int Keycode_WAKEUP = 224;

        /// <summary>
        /// Key code constant: Window key. On TV remotes, toggles picture-in-picture mode or other windowing functions.
        /// (0x000000ab)
        /// </summary>
        public static readonly int Keycode_WINDOW = 171;

        /// <summary>
        /// Key code constant: 'X' key.
        /// (0x00000034)
        /// </summary>
        public static readonly int Keycode_X = 52;

        /// <summary>
        /// Key code constant: 'Y' key.
        /// (0x00000035)
        /// </summary>
        public static readonly int Keycode_Y = 53;

        /// <summary>
        /// Key code constant: Japanese Yen key.
        /// (0x000000d8)
        /// </summary>
        public static readonly int Keycode_YEN = 216;

        /// <summary>
        /// Key code constant: 'Z' key.
        /// (0x00000036)
        /// </summary>
        public static readonly int Keycode_Z = 54;

        /// <summary>
        /// Key code constant: Japanese full-width / half-width key.
        /// (0x000000d3)
        /// </summary>
        public static readonly int Keycode_ZENKAKU_HANKAKU = 211;

        /// <summary>
        /// Key code constant: Zoom in key.
        /// (0x000000a8)
        /// </summary>
        public static readonly int Keycode_ZOOM_IN = 168;

        /// <summary>
        /// Key code constant: Zoom out key.
        /// (0x000000a9)
        /// </summary>
        public static readonly int Keycode_ZOOM_OUT = 169;

        /// <summary>
        /// This constant was deprecated in API level 3.
        /// There are now more than MAX_KEYCODE keycodes. Use getMaxKeyCode() instead.
        /// (0x00000054)
        /// </summary>
        public static readonly int Keycode_MAX = 84;

        /// <summary>
        /// This mask is used to check whether the left ALT meta key is pressed.
        /// See Also
        /// isAltPressed()
        /// getMetaState()
        /// Keycode_ALT_LEFT
        /// (0x00000010)
        /// </summary>
        public static readonly int MetaAlt_LEFT_ON = 16;

        /// <summary>
        /// This mask is a combination of META_ALT_ON, META_ALT_LEFT_ON and META_ALT_RIGHT_ON.
        /// (0x00000032)
        /// </summary>
        public static readonly int MetaAlt_MASK = 50;

        /// <summary>
        /// This mask is used to check whether one of the ALT meta keys is pressed.
        /// See Also
        /// isAltPressed()
        /// getMetaState()
        /// Keycode_ALT_LEFT
        /// Keycode_ALT_RIGHT
        /// (0x00000002)
        /// </summary>
        public static readonly int MetaAlt_ON = 2;

        /// <summary>
        /// This mask is used to check whether the right the ALT meta key is pressed.
        /// See Also
        /// isAltPressed()
        /// getMetaState()
        /// Keycode_ALT_RIGHT
        /// (0x00000020)
        /// </summary>
        public static readonly int MetaAlt_RIGHT_ON = 32;

        /// <summary>
        /// This mask is used to check whether the CAPS LOCK meta key is on.
        /// See Also
        /// isCapsLockOn()
        /// getMetaState()
        /// Keycode_CAPS_LOCK
        /// (0x00100000)
        /// </summary>
        public static readonly int MetaCaps_LOCK_ON = 1048576;

        /// <summary>
        /// This mask is used to check whether the left CTRL meta key is pressed.
        /// See Also
        /// isCtrlPressed()
        /// getMetaState()
        /// Keycode_CTRL_LEFT
        /// (0x00002000)
        /// </summary>
        public static readonly int MetaCtrl_LEFT_ON = 8192;

        /// <summary>
        /// This mask is a combination of META_CTRL_ON, META_CTRL_LEFT_ON and META_CTRL_RIGHT_ON.
        /// (0x00007000)
        /// </summary>
        public static readonly int MetaCtrl_MASK = 28672;

        /// <summary>
        /// This mask is used to check whether one of the CTRL meta keys is pressed.
        /// See Also
        /// isCtrlPressed()
        /// getMetaState()
        /// Keycode_CTRL_LEFT
        /// Keycode_CTRL_RIGHT
        /// (0x00001000)
        /// </summary>
        public static readonly int MetaCtrl_ON = 4096;

        /// <summary>
        /// This mask is used to check whether the right CTRL meta key is pressed.
        /// See Also
        /// isCtrlPressed()
        /// getMetaState()
        /// Keycode_CTRL_RIGHT
        /// (0x00004000)
        /// </summary>
        public static readonly int MetaCtrl_RIGHT_ON = 16384;

        /// <summary>
        /// This mask is used to check whether the FUNCTION meta key is pressed.
        /// See Also
        /// isFunctionPressed()
        /// getMetaState()
        /// (0x00000008)
        /// </summary>
        public static readonly int MetaFunction_ON = 8;

        /// <summary>
        /// This mask is used to check whether the left META meta key is pressed.
        /// See Also
        /// isMetaPressed()
        /// getMetaState()
        /// Keycode_META_LEFT
        /// (0x00020000)
        /// </summary>
        public static readonly int MetaMeta_LEFT_ON = 131072;

        /// <summary>
        /// This mask is a combination of META_META_ON, META_META_LEFT_ON and META_META_RIGHT_ON.
        /// (0x00070000)
        /// </summary>
        public static readonly int MetaMeta_MASK = 458752;

        /// <summary>
        /// This mask is used to check whether one of the META meta keys is pressed.
        /// See Also
        /// isMetaPressed()
        /// getMetaState()
        /// Keycode_META_LEFT
        /// Keycode_META_RIGHT
        /// (0x00010000)
        /// </summary>
        public static readonly int MetaMeta_ON = 65536;

        /// <summary>
        /// This mask is used to check whether the right META meta key is pressed.
        /// See Also
        /// isMetaPressed()
        /// getMetaState()
        /// Keycode_META_RIGHT
        /// (0x00040000)
        /// </summary>
        public static readonly int MetaMeta_RIGHT_ON = 262144;

        /// <summary>
        /// This mask is used to check whether the NUM LOCK meta key is on.
        /// See Also
        /// isNumLockOn()
        /// getMetaState()
        /// Keycode_NUM_LOCK
        /// (0x00200000)
        /// </summary>
        public static readonly int MetaNum_LOCK_ON = 2097152;

        /// <summary>
        /// This mask is used to check whether the SCROLL LOCK meta key is on.
        /// See Also
        /// isScrollLockOn()
        /// getMetaState()
        /// Keycode_SCROLL_LOCK
        /// (0x00400000)
        /// </summary>
        public static readonly int MetaScroll_LOCK_ON = 4194304;

        /// <summary>
        /// This mask is used to check whether the left SHIFT meta key is pressed.
        /// See Also
        /// isShiftPressed()
        /// getMetaState()
        /// Keycode_SHIFT_LEFT
        /// (0x00000040)
        /// </summary>
        public static readonly int MetaShift_LEFT_ON = 64;

        /// <summary>
        /// This mask is a combination of META_SHIFT_ON, META_SHIFT_LEFT_ON and META_SHIFT_RIGHT_ON.
        /// (0x000000c1)
        /// </summary>
        public static readonly int MetaShift_MASK = 193;

        /// <summary>
        /// This mask is used to check whether one of the SHIFT meta keys is pressed.
        /// See Also
        /// isShiftPressed()
        /// getMetaState()
        /// Keycode_SHIFT_LEFT
        /// Keycode_SHIFT_RIGHT
        /// (0x00000001)
        /// </summary>
        public static readonly int MetaShift_ON = 1;

        /// <summary>
        /// This mask is used to check whether the right SHIFT meta key is pressed.
        /// See Also
        /// isShiftPressed()
        /// getMetaState()
        /// Keycode_SHIFT_RIGHT
        /// (0x00000080)
        /// </summary>
        public static readonly int MetaShift_RIGHT_ON = 128;

        /// <summary>
        /// This mask is used to check whether the SYM meta key is pressed.
        /// See Also
        /// isSymPressed()
        /// getMetaState()
        /// (0x00000004)
        /// </summary>
        public static readonly int MetaSym_ON = 4;
    }
}
